উদাহরণ সহ Auditing বাস্তবায়ন

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Spring ORM এ Auditing |
58
58

Auditing হল একটি প্রক্রিয়া যা ডেটাবেসে রেকর্ড করা কোনো সত্তার সৃষ্টি (creation), পরিবর্তন (modification), অথবা মুছে ফেলার (deletion) সময় ট্র্যাক করে। Spring ORM এবং Hibernate ব্যবহার করে Auditing কার্যকরভাবে বাস্তবায়ন করা যায়। Spring Data JPA এ @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশনগুলো দিয়ে এই কাজটি করা যায়।


Maven ডিপেনডেন্সি

Spring Data JPA এবং Auditing এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.5.4</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.5.4</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>2.5.4</version>
</dependency>

Auditing কনফিগারেশন

Spring Data JPA-তে auditing সক্রিয় করার জন্য প্রথমে @EnableJpaAuditing অ্যানোটেশন ব্যবহার করতে হবে এবং এর সাথে AuditorAware ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।

Auditing কনফিগারেশন (Java-based)

@Configuration
@EnableJpaAuditing
public class JpaConfig {
    @Bean
    public AuditorAware<String> auditorProvider() {
        return new AuditorAwareImpl();
    }
}

AuditorAwareImpl ক্লাস তৈরি করা

AuditorAware ইন্টারফেস ইমপ্লিমেন্ট করে ব্যবহারকারীর তথ্য ট্র্যাক করা হয়। উদাহরণস্বরূপ, এই ক্লাসে ব্যবহারকারী হিসাবে Admin ব্যবহৃত হয়েছে, তবে আপনি এটি বাস্তবিক অ্যাপ্লিকেশনে নিরাপত্তা প্রেক্ষিতে কাস্টমাইজ করতে পারেন।

@Component
public class AuditorAwareImpl implements AuditorAware<String> {

    @Override
    public Optional<String> getCurrentAuditor() {
        // এখানে বর্তমান ব্যবহারকারী ফিরিয়ে দেওয়া হবে, যেমন "Admin"
        return Optional.of("Admin");
    }
}

Entity ক্লাসে Auditing অ্যানোটেশন যোগ করা

Auditing তথ্য সংগ্রহ করতে @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশন ব্যবহার করা হয়।

@Entity
@EntityListeners(AuditingEntityListener.class)
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    @CreatedDate
    @Column(name = "created_date")
    private LocalDateTime createdDate;

    @LastModifiedDate
    @Column(name = "last_modified_date")
    private LocalDateTime lastModifiedDate;

    @CreatedBy
    @Column(name = "created_by")
    private String createdBy;

    @LastModifiedBy
    @Column(name = "last_modified_by")
    private String lastModifiedBy;

    // Getters and Setters
}

রেপোজিটরি তৈরি করা

Spring Data JPA রেপোজিটরি ব্যবহার করে User সত্তার উপর CRUD অপারেশন সম্পাদন করা হয়। এখানে JpaRepository ব্যবহার করা হচ্ছে।

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

সার্ভিস লেয়ার তৈরি করা

ডেটাবেসে রেকর্ড তৈরি ও আপডেট করার জন্য সার্ভিস লেয়ার তৈরি করা হয়।

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public User updateUser(User user) {
        return userRepository.save(user);
    }
}

কন্ট্রোলার লেয়ার তৈরি করা

REST API বা MVC কন্ট্রোলার লেয়ারে ডেটা গ্রহণ ও ফেরত দেওয়ার জন্য কন্ট্রোলার তৈরি করা হয়।

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/add")
    public ResponseEntity<User> addUser(@RequestBody User user) {
        User savedUser = userService.saveUser(user);
        return ResponseEntity.ok(savedUser);
    }

    @PutMapping("/update")
    public ResponseEntity<User> updateUser(@RequestBody User user) {
        User updatedUser = userService.updateUser(user);
        return ResponseEntity.ok(updatedUser);
    }
}

Auditing তথ্যের ফলাফল

যখন User এন্টিটি তৈরি বা আপডেট করা হয়, তখন createdDate, lastModifiedDate, createdBy, এবং lastModifiedBy কলামগুলো স্বয়ংক্রিয়ভাবে পূর্ণ হবে।

উদাহরণ:

  1. User তৈরি করা হলে:
    createdDate এবং createdBy ফিল্ড পূর্ণ হবে।
  2. User আপডেট হলে:
    lastModifiedDate এবং lastModifiedBy ফিল্ড পূর্ণ হবে।

Auditing এর সুবিধা

  1. ডেটার ইতিহাস ট্র্যাকিং: Auditing ব্যবহার করে সিস্টেমে করা প্রতিটি পরিবর্তনের ইতিহাস রাখা যায়।
  2. ব্যবহারকারীর আইডেন্টিটি: কোন ব্যবহারকারী ডেটা তৈরি বা আপডেট করেছে তা জানার সুবিধা।
  3. কমপ্লায়েন্স ও অডিটিং: নিরাপত্তা এবং নিয়ন্ত্রণের জন্য সিস্টেমের সব পরিবর্তন ট্র্যাক করা যায়।

Spring ORM এবং Hibernate এর মাধ্যমে Auditing বাস্তবায়ন করার মাধ্যমে আপনি একটি সিস্টেমে ডেটা পরিবর্তন এবং এর ইতিহাস সঠিকভাবে ট্র্যাক করতে পারবেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion